package net.form.processing;

import java.util.ArrayList;
import java.util.List;

import net.form.ObjetoClasificador;
import net.form.processing.classification.EvaluadorClase;
import net.model.Clase;
import net.service.ClaseManager;

public class ClassifiedClass {

	private Clase clase;
	private ClassifiedContainer classifiedContainer = null;
	private Clasificador clasificador = null;
	private ClaseManager claseManager;

	public ClassifiedClass(Clase clase, ClassifiedContainer classifiedContainer,
			Clasificador clasificador) {
		this.clase = clase;
		this.classifiedContainer = classifiedContainer;
		this.clasificador = clasificador;
		this.claseManager = clasificador.getClaseManager();
		initComponents();
	}

	private void initComponents() {
		List<ObjetoClasificador> objetosClase = getObjetosClase();
		int cant = objetosClase.size();
		Double cantidadPixeles = 0.0;
		for (ObjetoClasificador obj : objetosClase) {
			cantidadPixeles = cantidadPixeles + obj.getPuntos().size()
					+ obj.getContorno().size();
		}
		if (!getClase().isObjetoReferencia()) {
			if (claseManager.getRubroCalidad(getClase().getNombre()) != null)
				getClassifiedContainer().getClassifiedResult().updateRecord(
						getClase().getRubroCalidad(), cantidadPixeles,
						new Double(cant));
		}
	}

	/**
	 * Retorna los objetos asignados a la clase
	 * 
	 * @return
	 */
	private List<ObjetoClasificador> getObjetosClase() {
		EvaluadorClase key = new EvaluadorClase(clase, null, claseManager);
		List<ObjetoClasificador> objetosClase = this.clasificador
				.getClasificacion().get(key);
		if (objetosClase != null)
			return objetosClase;
		return new ArrayList<ObjetoClasificador>();
	}

	public Clase getClase() {
		return clase;
	}

	public void setClase(Clase clase) {
		this.clase = clase;
	}

	public ClassifiedContainer getClassifiedContainer() {
		return classifiedContainer;
	}

	public void setClassifiedContainer(ClassifiedContainer classifiedContainer) {
		this.classifiedContainer = classifiedContainer;
	}

}
